home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 June: Reference Library / Dev.CD Jun 95 / Dev.CD Jun 95.toast / What's New? / New System Software Extensions / QuickDraw 3D ß / Programming / Interfaces / QD3DController.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-04  |  8.1 KB  |  284 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DController.h                                         **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Each physical device is represented in the system by a     **
  7.  **                 Controller record.  A device driver typically creates     **
  8.  **                 a controller.  Controller feeds changes in coordinates     **
  9.  **                 to a Tracker.                                             **
  10.  **                                                                          **
  11.  **                                                                          **
  12.  **     Copyright (C) 1992-94 Apple Computer, Inc.  All rights reserved.     **
  13.  **                                                                          **
  14.  **                                                                          **
  15.  *****************************************************************************/
  16. #ifndef QD3DController_h
  17. #define QD3DController_h
  18.  
  19. #if PRAGMA_ONCE
  20.     #pragma once
  21. #endif
  22.  
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif  /*  __cplusplus  */
  26.  
  27.  
  28. /******************************************************************************
  29.  **                                                                             **
  30.  **                                Type Definitions                             **
  31.  **                                                                             **
  32.  *****************************************************************************/
  33.  
  34. #define kQ3ControllerSetChannelMaxDataSize        256
  35.  
  36. typedef TQ3Status (*TQ3ChannelGetMethod) (
  37.     TQ3ControllerRef                controllerRef,
  38.     unsigned long                channel,
  39.     void                        *data,
  40.     unsigned long                *dataSize);
  41.  
  42. typedef TQ3Status (*TQ3ChannelSetMethod) (
  43.     TQ3ControllerRef                controllerRef,
  44.     unsigned long                channel,
  45.     const void                    *data,
  46.     unsigned long                dataSize);
  47.  
  48. typedef struct TQ3ControllerData {
  49.     char                        *signature;
  50.     unsigned long                valueCount;
  51.     unsigned long                channelCount;
  52.     TQ3ChannelGetMethod            channelGetMethod;
  53.     TQ3ChannelSetMethod            channelSetMethod;
  54. } TQ3ControllerData;
  55.  
  56.  
  57. /******************************************************************************
  58.  **                                                                             **
  59.  **                                     Routines                                 **
  60.  **                                                                             **
  61.  *****************************************************************************/
  62.  
  63. EXPORT TQ3Status Q3Controller_GetListChanged (
  64.     TQ3Boolean                    *listChanged,
  65.     unsigned long                *serialNumber);
  66.  
  67. EXPORT TQ3Status Q3Controller_Next(
  68.     TQ3ControllerRef                controllerRef,
  69.     TQ3ControllerRef                *nextControllerRef);
  70.  
  71. EXPORT TQ3ControllerRef Q3Controller_New(
  72.     const TQ3ControllerData        *controllerData);
  73.  
  74. EXPORT TQ3Status Q3Controller_Decommission(
  75.     TQ3ControllerRef                controllerRef);
  76.  
  77. EXPORT TQ3Status Q3Controller_SetActivation(
  78.     TQ3ControllerRef                controllerRef,
  79.     TQ3Boolean                    active);
  80.  
  81. EXPORT TQ3Status Q3Controller_GetActivation(
  82.     TQ3ControllerRef                controllerRef,
  83.     TQ3Boolean                    *active);
  84.  
  85. EXPORT TQ3Status Q3Controller_GetSignature(
  86.     TQ3ControllerRef                controllerRef,
  87.     char                        *signature,
  88.     unsigned long                numChars);
  89.  
  90. EXPORT TQ3Status Q3Controller_SetChannel(
  91.     TQ3ControllerRef                controllerRef,
  92.     unsigned long                channel,
  93.     const void                    *data,
  94.     unsigned long                dataSize);
  95.  
  96. EXPORT TQ3Status Q3Controller_GetChannel(
  97.     TQ3ControllerRef                controllerRef,
  98.     unsigned long                channel,
  99.     void                        *data,
  100.     unsigned long                *dataSize);
  101.  
  102. EXPORT TQ3Status Q3Controller_GetValueCount(
  103.     TQ3ControllerRef                controllerRef,
  104.     unsigned long                *valueCount);
  105.  
  106. EXPORT TQ3Status Q3Controller_SetTracker(
  107.     TQ3ControllerRef                controllerRef,
  108.     TQ3TrackerObject                tracker);
  109.  
  110. EXPORT TQ3Status Q3Controller_HasTracker(
  111.     TQ3ControllerRef                controllerRef,
  112.     TQ3Boolean                    *hasTracker);
  113.  
  114. EXPORT TQ3Status Q3Controller_Track2DCursor(
  115.     TQ3ControllerRef                controllerRef,
  116.     TQ3Boolean                    *track2DCursor);
  117.  
  118. EXPORT TQ3Status Q3Controller_Track3DCursor(
  119.     TQ3ControllerRef                controllerRef,
  120.     TQ3Boolean                    *track3DCursor);
  121.  
  122. EXPORT TQ3Status Q3Controller_GetButtons(
  123.     TQ3ControllerRef                controllerRef,
  124.     unsigned long                *buttons);
  125.  
  126. EXPORT TQ3Status Q3Controller_SetButtons(
  127.     TQ3ControllerRef                controllerRef,
  128.     unsigned long                buttons);
  129.  
  130. EXPORT TQ3Status Q3Controller_GetTrackerPosition(
  131.     TQ3ControllerRef                controllerRef,
  132.     TQ3Point3D                    *position);
  133.  
  134. EXPORT TQ3Status Q3Controller_SetTrackerPosition(
  135.     TQ3ControllerRef                controllerRef,
  136.     const TQ3Point3D                *position);
  137.  
  138. EXPORT TQ3Status Q3Controller_MoveTrackerPosition(
  139.     TQ3ControllerRef                controllerRef,
  140.     const TQ3Vector3D            *delta);
  141.  
  142. EXPORT TQ3Status Q3Controller_GetTrackerOrientation(
  143.     TQ3ControllerRef                controllerRef,
  144.     TQ3Quaternion                *orientation);
  145.  
  146. EXPORT TQ3Status Q3Controller_SetTrackerOrientation(
  147.     TQ3ControllerRef                controllerRef,
  148.     const TQ3Quaternion            *orientation);
  149.  
  150. EXPORT TQ3Status Q3Controller_MoveTrackerOrientation(
  151.     TQ3ControllerRef                controllerRef,
  152.     const TQ3Quaternion            *delta);
  153.  
  154. EXPORT TQ3Status Q3Controller_GetValues(
  155.     TQ3ControllerRef                controllerRef,
  156.     unsigned long                valueCount,
  157.     float                        *values,
  158.     TQ3Boolean                    *changed,
  159.     unsigned long                *serialNumber);
  160.  
  161. EXPORT TQ3Status Q3Controller_SetValues(
  162.     TQ3ControllerRef                controllerRef,
  163.     const float                    *values,
  164.     unsigned long                valueCount);
  165.  
  166.  
  167. /******************************************************************************
  168.  **                                                                             **
  169.  **                                     Routines                                 **
  170.  **                                                                             **
  171.  *****************************************************************************/
  172.  
  173. EXPORT TQ3ControllerStateObject Q3ControllerState_New(
  174.     TQ3ControllerRef                controllerRef);
  175.  
  176. EXPORT TQ3Status Q3ControllerState_SaveAndReset(
  177.     TQ3ControllerStateObject        controllerStateObject);
  178.  
  179. EXPORT TQ3Status Q3ControllerState_Restore(
  180.     TQ3ControllerStateObject        controllerStateObject);
  181.  
  182.  
  183. /******************************************************************************
  184.  **                                                                             **
  185.  **                                Type Definitions                             **
  186.  **                                                                             **
  187.  *****************************************************************************/
  188.  
  189. typedef TQ3Status (*TQ3TrackerNotifyFunc) (
  190.     TQ3TrackerObject            trackerObject,
  191.     TQ3ControllerRef            controllerRef);
  192.  
  193.  
  194. /******************************************************************************
  195.  **                                                                             **
  196.  **                                     Routines                                 **
  197.  **                                                                             **
  198.  *****************************************************************************/
  199.  
  200. EXPORT TQ3TrackerObject Q3Tracker_New(
  201.     TQ3TrackerNotifyFunc        notifyFunc);
  202.  
  203. EXPORT TQ3Status Q3Tracker_SetNotifyThresholds(
  204.     TQ3TrackerObject            trackerObject,
  205.     float                    positionThresh,
  206.     float                    orientationThresh);
  207.  
  208. EXPORT TQ3Status Q3Tracker_GetNotifyThresholds(
  209.     TQ3TrackerObject            trackerObject,
  210.     float                    *positionThresh,
  211.     float                    *orientationThresh);
  212.  
  213. EXPORT TQ3Status Q3Tracker_SetActivation (
  214.     TQ3TrackerObject            trackerObject,
  215.     TQ3Boolean                active);
  216.  
  217. EXPORT TQ3Status Q3Tracker_GetActivation (
  218.     TQ3TrackerObject            trackerObject,
  219.     TQ3Boolean                *active);
  220.  
  221. EXPORT TQ3Status Q3Tracker_GetButtons(
  222.     TQ3TrackerObject            trackerObject,
  223.     unsigned long            *buttons);
  224.  
  225. EXPORT TQ3Status Q3Tracker_ChangeButtons(
  226.     TQ3TrackerObject            trackerObject,
  227.     TQ3ControllerRef            controllerRef,
  228.     unsigned long            buttons,
  229.     unsigned long            buttonMask);
  230.  
  231. EXPORT TQ3Status Q3Tracker_GetPosition(
  232.     TQ3TrackerObject            trackerObject,
  233.     TQ3Point3D                *position,
  234.     TQ3Vector3D                *delta,
  235.     TQ3Boolean                *changed,
  236.     unsigned long            *serialNumber);
  237.  
  238. EXPORT TQ3Status Q3Tracker_SetPosition(
  239.     TQ3TrackerObject            trackerObject,
  240.     TQ3ControllerRef            controllerRef,
  241.     const TQ3Point3D            *position);
  242.  
  243. EXPORT TQ3Status Q3Tracker_MovePosition(
  244.     TQ3TrackerObject            trackerObject,
  245.     TQ3ControllerRef            controllerRef,
  246.     const TQ3Vector3D        *delta);
  247.  
  248. EXPORT TQ3Status Q3Tracker_GetOrientation(
  249.     TQ3TrackerObject            trackerObject,
  250.     TQ3Quaternion            *orientation,
  251.     TQ3Quaternion            *delta,
  252.     TQ3Boolean                *changed,
  253.     unsigned long            *serialNumber);
  254.  
  255. EXPORT TQ3Status Q3Tracker_SetOrientation(
  256.     TQ3TrackerObject            trackerObject,
  257.     TQ3ControllerRef            controllerRef,
  258.     const TQ3Quaternion        *orientation);
  259.  
  260. EXPORT TQ3Status Q3Tracker_MoveOrientation(
  261.     TQ3TrackerObject            trackerObject,
  262.     TQ3ControllerRef            controllerRef,
  263.     const TQ3Quaternion        *delta);
  264.  
  265. EXPORT TQ3Status Q3Tracker_SetEventCoordinates(
  266.     TQ3TrackerObject            trackerObject,
  267.     unsigned long            timeStamp,
  268.     unsigned long            buttons,
  269.     const TQ3Point3D            *position,
  270.     const TQ3Quaternion        *orientation);
  271.  
  272. EXPORT TQ3Status Q3Tracker_GetEventCoordinates(
  273.     TQ3TrackerObject            trackerObject,
  274.     unsigned long            timeStamp,
  275.     unsigned long            *buttons,
  276.     TQ3Point3D                *position,
  277.     TQ3Quaternion            *orientation);
  278.  
  279. #ifdef __cplusplus
  280. }
  281. #endif  /*  __cplusplus  */
  282.  
  283. #endif  /*  QD3DController_h  */
  284.